home *** CD-ROM | disk | FTP | other *** search
/ PC Media 23 / PC MEDIA CD23.iso / share / prog / anubis / ventana2.h < prev    next >
Encoding:
C/C++ Source or Header  |  1996-02-08  |  6.3 KB  |  195 lines

  1. // VENTANA2
  2. //(C) Anubis Software Junio 1995
  3. // Esta librería, pretende mejorar la librería VENTANA.H aplicando los
  4. // nuevos conocimientos sobre el tema que tenemos. Esta librería no
  5. // utiliza objetos ni tampoco las interrupciones de la BIOS por razones
  6. // de orgullo y eficiencia.
  7.  
  8. // NOTAS REMARCABLES:
  9. // ------------------
  10.  
  11. //    -Este sistema, debe ser compilado con el modelo de código Compact,
  12. // Large o Huge, porque utiliza muchísima memoria, y lo necesita de verdad.
  13. //    -Como el sistema de menus usa la pantalla 1 como auxiliar, el sistema
  14. // de ventanas, que irá conjuntamente con él. También utilizará la pantalla
  15. // 1 como auxiliar. Queda libre para uso temporal en otros algoritmos.
  16. //    -Según este sitema, es posible escribir en cualquier ventana, e
  17. // incluso en el fondo de la pantalla, sin que sea necesario que sea la
  18. // ventana seleccionada. Para la escritura en pantalla hay que utilizar una
  19. // función especial proporcionada por la librería, y se debe tener en
  20. // cuenta el hecho de que haya ventanas abiertas o no.
  21. //    -Debe proporcionarse un sistema de refresco de pantalla, para hacer
  22. // posible la visualización de datos nuevos no escritos en la ventana
  23. // principal.
  24. //    -Lo que se escribe en cada ventana, corre por cuenta del usuario.
  25. //    -Todas las ventanas, deben poder ser accesibles a pesar de que no
  26. // estén en visualización.
  27. #ifndef VENTANA2.H
  28. #define VENTANA2.H
  29.  
  30. // -----------------------------------+
  31. // Inclusión de librerias Borland C++ |
  32. // -----------------------------------+
  33. #include <dos.h>
  34. #include <mem.h>
  35. #include <conio.h>
  36. #include <stdio.h>
  37. #include <string.h>
  38.  
  39.  
  40. // ---------------------------------------+
  41. // Inclusión de librerias Anubis Software |
  42. // ---------------------------------------+
  43. #include "cadena.h"
  44. #include "mdefs.h"
  45. #include "mouse.h"
  46. #include "textmode.h"
  47. #include "idlexec.h"
  48. #include "tecexec.h"
  49. #include "colores.h"
  50.  
  51.  
  52. // -------------------------+
  53. // Definición de constantes |
  54. // -------------------------+
  55. #define MAX_WINDOWS  50
  56. #define ANCHO_PANTALLA 80
  57. #define ALTO_PANTALLA  25
  58.  
  59. // Definición de tipos para ventana_define
  60. #define V_TEXTO        0
  61. #define V_PRESENTACION 1
  62. #define V_FORM         2
  63. #define NO_TYPE_WINDOW 3
  64.  
  65. // Definición de los errores de la libreria.
  66. #define COORD_NOT_CORRECTS 1
  67.  
  68. // Definición de literales de la librería.
  69. #define SENCILLA     0
  70. #define MARCO        1
  71. #define TITULO       2
  72. #define INFORMACION  4
  73. #define H_BARRA      8
  74. #define V_BARRA     16
  75. #define CERRAR      32
  76. #define AMPLIAR     64
  77. #define ACTIVA       1
  78. #define DESACTIVA    0
  79. #define MOVER      128
  80. #define MODIFICAR  256
  81. #define CAMBIAR    512
  82. #define PULSAR_VENTANA    1024
  83. #define DPULSAR_VENTANA   2048
  84.  
  85. // Definición de algunos códigos de retorno adicionales
  86. #define H_BARRA_DERECHA    9
  87. #define H_BARRA_IZQUIERDA 10
  88. #define V_BARRA_ARRIBA    11
  89. #define V_BARRA_ABAJO     12
  90. #define H_BARRA_BOTON     13
  91. #define V_BARRA_BOTON     14
  92.  
  93. // -----------------------------------------+
  94. // Definición de estructuras de la libreria |
  95. // -----------------------------------------+
  96. typedef struct {
  97.    char            Nombre[80];
  98.    char            Pantalla[4000];
  99.    WORD            Caracteristicas;
  100.    BYTE  PosX,
  101.          PosY,
  102.          Ancho,
  103.          Alto;
  104.    char            ColorFondo,
  105.          ColorTexto,
  106.          ColorLetra;
  107.    char            AI,
  108.          AD,
  109.          ABI,
  110.          ABD,
  111.          Horizontal,
  112.          Vertical,
  113.          Cerrar[3],
  114.          Expandir[3],
  115.          VBarra[3],
  116.          HBarra[3],
  117.          Posicion,
  118.          VPosicion,
  119.          HPosicion;
  120.    BYTE  CursorX,     // Son las Posiciones relativas a
  121.          CursorY;     // PosX y PosY, no las absolutas a la ventana.
  122.    char  EstadoCursor,
  123.          TipoVentana;
  124.    void far *      Apuntador;
  125. }Ventana2;
  126.  
  127. // ---------------------------------+
  128. // Definición de variables globales |
  129. // ---------------------------------+
  130. extern Ventana2 *PilaVentanas[MAX_WINDOWS];
  131. extern Ventana2 VentFondo;
  132. extern int IndPilaVentanas;
  133. extern char Vpatron[80][25];
  134.  
  135.  
  136. // ------------------------------------------+
  137. // Declaracion de macros de la libreria      |
  138. //-------------------------------------------+
  139. // Funciones con la pila de ventanas.
  140. #define TopeVentanas          PilaVentanas[IndPilaVentanas]
  141. #define EmpilaVentana(vent)   PilaVentanas[++IndPilaVentanas] = vent
  142. #define DesempilaVentana()    --IndPilaVentanas
  143.  
  144.  
  145. // Funciones para escritura de un solo caracter en ventanas.
  146. #define EscribeCV(vent,car,x,y,ct,cf)  EscribeCPAV(vent,car,CARACTER(x,y),COLOR(ct,cf))
  147. #define EscribeCAV(vent,car,x,y,atr)   EscribeCPAV(vent,car,CARACTER(x,y),atr)
  148. #define EscribeCPV(vent,car,pos,ct,cf) EscribeCPAV(vent,car,pos,COLOR(ct,cf))
  149.  
  150. // Funciones para escritura de una cADena de caracteres en ventanas.
  151. #define EscribeV(vent,car,x,y,ct,cf)   EscribePAV(vent,car,CARACTER(x,y),COLOR(ct,cf))
  152. #define EscribeAV(vent,car,x,y,atr)    EscribePAV(vent,car,CARACTER(x,y),atr)
  153. #define EscribePV(vent,car,pos,ct,cf)  EscribePAV(vent,car,pos,COLOR(ct,cf))
  154.  
  155.  
  156. // ------------------------------------------+
  157. // Declaración de prototipos de la librería  |
  158. // ------------------------------------------+
  159. void EscribeCPAV(Ventana2 *,char ,WORD, BYTE );
  160. void EscribePAV(Ventana2 *,char *,WORD, BYTE );
  161. void EmulacionPantalla(Ventana2 *);
  162. void VentanaBorrar(Ventana2 *);
  163. void VentanaDefine(Ventana2*, int);
  164. void VentanaGotoXY(Ventana2 *,BYTE ,BYTE );
  165. void VentanaPutch(Ventana2 *,unsigned char );
  166. void VentanaPuts(Ventana2 *, char *);
  167. void VSubePantalla(Ventana2 *);
  168. void VBajaPantalla(Ventana2 *);
  169. void VAvanzaPantalla(Ventana2 *);
  170. void VRetrasaPantalla(Ventana2 *);
  171. void VentanaPoner(Ventana2 *,int );
  172. void VentanaInicializar(void);
  173. void VPintarTodo(void);
  174. boolean VentanaCerrar(Ventana2 *);
  175. void VentanaAbrir(Ventana2 *);
  176. void VDibujarMarco(Ventana2 *, char );
  177. int VentanaMover(Ventana2 *,int ,int );
  178. void VMoverPantalla(void);
  179. int EvntVentanas(int *);
  180. void VCambiarPrincipal(int );
  181. void VentanaModificar(void);
  182. void VControlaCursor(void);
  183. void VentanaCoordenadas(Ventana2 *,int, int, int, int);
  184. void VentanaTextcolor(Ventana2 *,char);
  185. void VentanaTextbackground(Ventana2 *,char);
  186. void VentanaTitulo(Ventana2 *, char *);
  187. void VentanaTipoCursor(Ventana2 *, char);
  188. void VCPatron(void);
  189.  
  190.  
  191.  
  192. #endif
  193.  
  194.  
  195.